import request from '@/utils/request'

/**
 * 创建蓝新支付订单（信用卡支付）
 * @param {Object} data - 支付订单数据
 * @returns {Promise}
 */
export function createOpayOrder(data) {
    return request({
        url: '/api/payment/newebpay/create',
        method: 'post',
        data: data 
    })
}

/**
 * 创建綠界支付订单
 * @param {Object} data - 支付订单数据
 * @returns {Promise}
 */
export function createECPayOrder(data) {
    return request({
        url: '/api/payment/ecpay/create',
        method: 'post',
        data
    })
}

/**
 * 查询支付状态
 * @param {string} orderNo - 订单号
 * @returns {Promise}
 */
export function queryPaymentStatus(orderNo) {
    return request({
        url: `/api/payment/status/${orderNo}`,
        method: 'get'
    })
}

/**
 * 支付完成回调处理
 * @param {string} orderNo - 订单号
 * @returns {Promise}
 */
export function handlePaymentComplete(orderNo) {
    return request({
        url: '/api/payment/complete',
        method: 'get',
        params: { orderNo }
    })
}

/**
 * 统一创建支付订单接口
 * @param {string} type - 支付类型 ('credit' | 'ecpay')
 * @param {Object} data - 支付订单数据
 * @returns {Promise}
 */
export function createPaymentOrder(type, data) {
    const api = type === 'credit' ? createOpayOrder : createECPayOrder;
    return api(data);
}

/**
 * 构建支付请求数据
 * @param {Object} params - 基础参数
 * @returns {Object} - 格式化后的支付请求数据
 */
export function buildPaymentRequest(params) {
    const {
        orderNo,
        amount,
        description,
        itemName,
        returnUrl,
        notifyUrl,
        registrationInfo
    } = params;

    return {
        orderNo,
        amount,
        description,
        itemName,
        returnUrl,
        notifyUrl,
        registrationInfo,
        // 可以添加其他通用参数
        createTime: new Date().toISOString(),
        currency: 'TWD'
    };
}

/**
 * 获取支付状态文本
 * @param {string} status - 状态代码
 * @returns {string} - 状态文本
 */
export function getPaymentStatusText(status) {
    const statusMap = {
        PENDING: '等待支付',
        PROCESSING: '处理中',
        SUCCESS: '支付成功',
        FAIL: '支付失败',
        CANCEL: '已取消',
        TIMEOUT: '已超时'
    };
    return statusMap[status] || '未知状态';
}

/**
 * 检查支付结果
 * @param {Object} result - 支付结果数据
 * @returns {boolean} - 是否支付成功
 */
export function checkPaymentResult(result) {
    return result && result.status === 'SUCCESS';
}

export default {
    createOpayOrder,
    createECPayOrder,
    queryPaymentStatus,
    handlePaymentComplete,
    createPaymentOrder,
    buildPaymentRequest,
    getPaymentStatusText,
    checkPaymentResult
} 